home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
lang_c
/
c_windw
/
writtest.c
< prev
next >
Wrap
Text File
|
1988-01-04
|
3KB
|
90 lines
/* (c) Marietta Systems, Inc. 1987
* All rights reserved
*
* Test program for filewrit function
*
* Note: This uses the file created by the test program 'filetest'
*/
#include "mtest.h"
int acptlong(long*, enum _JUST, enum ATTRIB, int);
/*
*
* Function to accept a long int
*
*/
int acptlong(kk, just, atb, digits)
long *kk;
enum _JUST just;
enum ATTRIB atb;
int digits;{
int z;
char text[15];
#ifdef LATTICE
stcl_d(text, *kk);
#else
ltoa(*kk, text, 10);
#endif
z = accept(text, just, atb, digits, 0);
*kk = atol(text);
return z;
}
/*
*
* Main program
*
*/
void main(){
long rec_nbr;
int fh1, fh2, z, x, k;
clr_scrn("Filewrit access test");
KEYMATCH[4] = 0X8000; disp_err("",1); /* activate F8 - AMEND key */
/*
* open ascii file, and copy it into a relative file with binary
* length records, stripping the '\n' symbol.
*/
fh1 = fileopen("testfile.dat", ascii, readonly);
fh2 = fileopen("testfile.rel", binary, recreate);
if (fh1 <= 0 || fh2 <= 0) goodbye (106);
if (fileinit(fh2, 0, 64, 0L)) goodbye(110);
display ("File opened - records ready to be read", 1, 1, low);
rec_nbr = 1L;
for (z = 0 , x = 2 ; ; z++, x++){
if (!(k = fileread(fh1, nextrec, &rec_nbr))) break; /* EOF */
if (k < 0) goodbye(107); /* read error */
FN[fh1].record[strlen(FN[fh1].record) - 1] = 0; /* delete '\n' */
justify (left, FN[fh2].record, FN[fh1].record, 35, 0);
rec_nbr -= 1L;
if (filewrit(fh2, &rec_nbr) < 0) goodbye(108);
display(FN[fh2].record, x, 1, reverse);
}
if (fileclos(fh1) < 1 || fileclos(fh2) < 1) goodbye(109);
while (!disp_qry(" Ready to random read/write"));
/*
* reopen file 2
*/
fh2 = fileopen("testfile.rel", binary, update);
if (fileinit(fh2, 0, 64, 20L)) goodbye(110);
if (fh2 <= 0) goodbye (106);
display ("File opened - records ready to be read", 1, 40, low);
display ("Next record number to be actioned", 22, 44, high);
rec_nbr = 1L;
for (;;){
if (INCHAR == AMEND) k = fileread(fh2, nextrec, &rec_nbr);
else k = fileread(fh2, relative, &rec_nbr);
if (k < 0) goodbye(107); if (!k) break;
display(FN[fh2].record, 3, 40, reverse);
set_crsr(22,40);
rec_nbr -= 1L;
z = acptlong(&rec_nbr, code, alt_reverse, 3);
if (!z) continue;
if (INCHAR != AMEND) break;
set_crsr(5, 40);
if (accept(FN[fh2].record, left, alt_reverse, 35, 0))
if (INCHAR == QUIT) break; else continue;
filewrit(fh2, &rec_nbr);
}
if (fileclos(fh2) < 1) goodbye(109);
disp_msg(" Press any key to end", 1);
read_kb();
goodbye(0);
}